#include<bits/stdc++.h>
using namespace std;
const int N=105;

char arr[N][N];
bool visit[N][N];
int n,m;
string s;
const int dr[8]={-1,-1,-1,0,0,1,1,1};
const int dc[8]={-1,0,1,-1,1,-1,0,1};

int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>s;
		for(int j=0;s[j]!='\0';j++)
		{
			arr[i][j+1]=s[j];
		}
	}
	int ans=0;
	memset(visit,false,sizeof(visit));
	queue<int> que;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			if(!visit[i][j]&&arr[i][j]=='W')
			{
				visit[i][j]=true;
				que.push(i);
				que.push(j);
				while(!que.empty())
				{
					int r=que.front();
					que.pop();
					int c=que.front();
					que.pop();
					for(int k=0;k<8;k++)
					{
						int r1=r+dr[k];
						int c1=c+dc[k];
						if(!visit[r1][c1]&&arr[r1][c1]=='W')
						{
							que.push(r1);
							que.push(c1);
							visit[r1][c1]=true;
						}
					}
				}
				ans++;
			}
		}
	}
	cout<<ans;
	return 0;
}
